# 作者: 陈其志 
# 2025年02月20日14时45分28秒 
# 2716847110@qq.com

class Person:
    def __init__(self, name, age, weight):
        """
        定义类的属性
        :param name:
        :param age:
        :param weight:
        """
        self.name = name
        self.age = age
        self.weight = weight

    def run(self):
        """
        定义类的方法
        :return:
        """
        self.weight -= 0.5
        print(f"{self.name}跑了步，体重减少到{self.weight}")

    def eat(self):
        """
        定义类的吃方法
        :return:
        """
        self.weight += 1
        print(f"{self.name}吃了饭，体重增加到{self.weight}")


class Dog:
    def __init__(self, name, age, color):
        self.name = name
        self.age = age
        self.color = color

    def speak(self):
        """
        self代表对象自己，代表实例化的对象。
        例如dog_1.shake()，会把对象dog_1给当做参数传递给self
        :return:
        """
        pass

    def shake(self):
        pass


if __name__ == '__main__':
    # 实例化对象
    cqz = Person('cqz', 24, 80)
    zjz = Person('zjz', '24', 55)
    cqz.run()
    zjz.eat()
    print(cqz.weight)
    print(zjz.weight)
    dog_1 = Dog('大黄', 2, 'yellow')
    dog_1.shake()
    dog_1.speak()
    print('-' * 50)
    # dir看类和对象的
    print(dir(cqz))
    print(dir(zjz))
    print(dir(Person))

    # 在对象里再添加属性，而不是初始化的属性
    cqz.height = 178
    print(cqz.height)
    # 以上的代码业界不认可，编程风格不规范
    cqz.weight = 100  # 可以修改
    print(cqz.weight)  # 修改属性不改变其地址，因为对象是可变数据类型
